# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from datetime import datetime
from django.test import TestCase
from web.models import Web


class WebTest (TestCase):
    # 测试数据生成，用到create创建一个对象，再验证数据，比较简单
    def test_obj_create(self):
        Web.objects.create(title='raw title', body='raw body', timestamp=datetime.now())
        self.assertEqual(1, Web.objects.count())
        self.assertEqual('raw title', Web.objects.get(id=1).title)

    # 用于测试主页，我们的主页就是这个，用的是self.client这个django的测试实例，返回的是成功的状态码200
    def test_home(self):
        response = self.client.get('/test/')
        self.failUnlessEqual(response.status_code, 200)

    # 之前设计的页面没有这个页面，所以返回404
    def test_slash(self):
        response = self.client.get('/')
        self.assertEqual(response.status_code, 404)

    # 这个测试的是重定向，这个界面返回到/test/界面，所以是301，可能会出现302，所以用了assertIn函数
    def test_empty_create(self):
        response = self.client.get('/test/create/')
        self.assertIn(response.status_code, (301, 302))

    def test_post_create(self):
        response = self.client.post('/test/create/',
                                     {'title': 'post title', 'body': 'post body', 'timestamp': datetime.now ()})
        self.assertIn(response.status_code, (301, 302))
        self.assertEqual(1, Web.objects.count())
        print(Web.objects.get(body='post body').id)
        self.assertEqual('post title', Web.objects.get(body='post body').title)
